package net.zoneland.zrdp.biz.enums;

import com.richercloud.lift.lang.enums.ValueOf;

import lombok.Getter;
import net.zoneland.zrdp.common.enums.BaseEnum;

/**
 * 省公司和11地市分公司DN.
 * @author Pbody
 **/
@Getter
public enum CompanyEnum implements BaseEnum<String> {

    ZMCC("O=zmcc",  "省公司", "SGS", "OU=公司领导,O=zmcc"),
    HZZMCC("OU=hzzmcc,O=zmcc", "杭州分公司", "HZ", "OU=公司领导,OU=hzzmcc,O=zmcc"),
    NBZMCC("OU=nbzmcc,O=zmcc", "宁波分公司", "NB", "OU=公司领导,OU=nbzmcc,O=zmcc"),
    WZZMCC("OU=wzzmcc,O=zmcc", "温州分公司", "WZ", "OU=公司领导,OU=wzzmcc,O=zmcc"),
    TZZMCC("OU=tzzmcc,O=zmcc", "台州分公司", "TZ", "OU=领导,OU=tzzmcc,O=zmcc"),
    JHZMCC("OU=jhzmcc,O=zmcc", "金华分公司", "JH", "OU=公司领导,OU=jhzmcc,O=zmcc"),
    SXZMCC("OU=sxzmcc,O=zmcc", "绍兴分公司", "SX", "OU=公司领导,OU=sxzmcc,O=zmcc"),
    JXZMCC("OU=jxzmcc,O=zmcc", "嘉兴分公司", "JX", "OU=公司领导,OU=jxzmcc,O=zmcc"),
    HUZMCC("OU=huzmcc,O=zmcc", "湖州分公司", "HU", "OU=公司领导,OU=huzmcc,O=zmcc"),
    QZZMCC("OU=qzzmcc,O=zmcc", "衢州分公司", "QZ", "OU=公司领导,OU=lszmcc,O=zmcc"),
    LSZMCC("OU=lszmcc,O=zmcc", "丽水分公司", "LS", "OU=分公司领导,OU=zszmcc,O=zmcc"),
    ZSZMCC("OU=zszmcc,O=zmcc", "舟山分公司", "ZS", "OU=公司领导,OU=qzzmcc,O=zmcc");

    /** 枚举值：省/地市公司DN. **/
    private final String value;
    /** 枚举名称：省/地市公司名称. **/
    private final String name;
    /** 公司简写代码. **/
    private final String shortName;
    /** 公司领导部门DN：一般用于公司级别领导人读取的统一权限控制. **/
    private final String leader;

    /** 地市名称. */
    static final ValueOf<CompanyEnum, String> BY_NAME = new ValueOf<>(CompanyEnum.class, CompanyEnum::getName);


    CompanyEnum(final String value, final String name, final String shortName, final String leader) {
        this.value = value;
        this.name = name;
        this.shortName = shortName;
        this.leader = leader;
    }

    /**
     * 校验传入的公司名称是否符合枚举参数.
     * @author helu
     * @Date 15:12 2023/11/2
     * @param name 地市名称
     * @return boolean 校验结果
     **/
    public static boolean anyEquals(final String name) {
        return BY_NAME.valueOf(name).isPresent();
    }
}
